﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Data.SqlClient;
using moviecentro;
using CruzSur.Models;
using System.Data;

namespace CruzSur.Controllers
{
    public static partial class AppDa
    {

        public static List<IncidenciaModel> ListarIncidencias(string NroIncidencia, DateTime FechaIni, DateTime FechaFin)
        {
            // ----- Lista C01
            List<IncidenciaModel> ListData = new List<IncidenciaModel>();
            System.Data.SqlClient.SqlParameter[] param;

            if (NroIncidencia != "")
            {
                param = new System.Data.SqlClient.SqlParameter[3];
                param[0] = new SqlParameter("@NroIncidencia", SqlDbType.Int);
                param[0].Value = NroIncidencia;

                param[1] = new SqlParameter("@FechaIni", SqlDbType.DateTime);
                param[1].Value = DBNull.Value;

                param[2] = new SqlParameter("@FechaFin", SqlDbType.DateTime);
                param[2].Value = DBNull.Value;
            }
            else
            {
                param = new System.Data.SqlClient.SqlParameter[3];

                param[0] = new SqlParameter("@NroIncidencia", SqlDbType.Int);
                param[0].Value = DBNull.Value;

                param[1] = new SqlParameter("@FechaIni", SqlDbType.DateTime);
                param[1].Value = FechaIni;

                param[2] = new SqlParameter("@FechaFin", SqlDbType.DateTime);
                param[2].Value = FechaFin;
            }

            SqlDataReader reader = dbgestor.ListarSql2("exec IncidenciasListar @NroIncidencia , @FechaIni, @FechaFin ", param);

            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    IncidenciaModel ListItem = new IncidenciaModel();

                    ListItem.Fecha_Hora = reader.GetDateTime(reader.GetOrdinal("Fecha_Creacion"));
                    ListItem.ID = reader.GetInt32(reader.GetOrdinal("ID_incidencia"));
                    ListItem.Placa = reader["Nro_Placa"].ToString();
                    ListItem.Descripcion = reader["Descripcion"].ToString();
                    ListItem.Estado = reader["Descripcion_Estado"].ToString();
                    ListItem.Impacto = reader["Tipo_Impacto_Descripcion"].ToString();
                    ListItem.Urgencia = reader["Tipo_Urgencia_Descripcion"].ToString();
                    ListItem.Responsable = reader["Tipo_Urgencia_Descripcion"].ToString();
                    ListData.Add(ListItem);
                }
            }
            reader.Close();

            return ListData;
        }

        public static IncidenciaModel ListarIncidenciasItem(string IDItem)
        {
            // ----- Lista C01
            List<IncidenciaModel> ListData = new List<IncidenciaModel>();

            System.Data.SqlClient.SqlParameter[] param = new System.Data.SqlClient.SqlParameter[1];
            param[0] = new SqlParameter("@ID_Viaje", SqlDbType.Int);
            param[0].Value = IDItem;

            SqlDataReader reader = dbgestor.ListarSql2("exec IncidenciasListar_ID @ID_Viaje ", param);

            while (reader.Read())
            {
                IncidenciaModel ListItem = new IncidenciaModel();
                ListItem.Fecha_Hora = reader.GetDateTime(reader.GetOrdinal("Fecha_Creacion"));
                ListItem.ID = reader.GetInt32(reader.GetOrdinal("ID_incidencia"));
                ListItem.Placa = reader["Nro_Placa"].ToString();
                ListItem.Descripcion = reader["Descripcion"].ToString();
                ListItem.Estado = reader["Descripcion_Estado"].ToString();
                ListItem.Impacto = reader["Tipo_Impacto_Descripcion"].ToString();
                ListItem.Urgencia = reader["Tipo_Urgencia_Descripcion"].ToString();
                ListItem.Responsable = reader["Tipo_Urgencia_Descripcion"].ToString();
                ListItem.Brevete = reader["Nro_Brevete"].ToString();

                ListItem.GetTipo = reader["Tipo_Incidencia"].ToString();
                ListItem.GetImpacto = reader["Tipo_Impacto"].ToString();
                ListItem.GetUrgencia= reader["Tipo_Urgencia"].ToString();
                ListItem.GetResponsable= reader["Responsable"].ToString();
                ListItem.GetEstado = reader["Estado_Incidencia"].ToString();


                ListData.Add(ListItem);
            }
            reader.Close();

            return ListData[0];
        }

        public static void IncidenteActualizar(IncidenciaModel item)
        {

            dbsql.ClearSQL();
            dbsql.AddTable("Viaje_Incidencias");
            dbsql.AddField(SqlDbType.VarChar, "NRO_PLACA", item.Placa);
            dbsql.AddField(SqlDbType.VarChar, "NRO_BREVETE", item.Brevete);
            dbsql.AddField(SqlDbType.Int, "TIPO_IMPACTO", item.GetImpacto);
            dbsql.AddField(SqlDbType.Int, "TIPO_URGENCIA", item.GetUrgencia);
            dbsql.AddField(SqlDbType.Int, "TIPO_INCIDENCIA", item.GetTipo);
            dbsql.AddField(SqlDbType.VarChar, "DESCRIPCION", item.Descripcion);
            dbsql.AddField(SqlDbType.VarChar, "RESPONSABLE", item.GetResponsable);
            dbsql.AddField(SqlDbType.DateTime, "FECHA_MODIFICACION", DateTime.Now);

            dbsql.AddWhere(SqlDbType.Int, "ID_INCIDENCIA", item.ID);

            dbsql.UpdateNow();
        }

        public static void IncidenteInsertar(IncidenciaModel item)
        {

            dbsql.ClearSQL();
            dbsql.AddTable("Viaje_Incidencias");
            
            dbsql.AddField(SqlDbType.VarChar, "NRO_PLACA", item.Placa);
            dbsql.AddField(SqlDbType.VarChar, "NRO_BREVETE", item.Brevete);
            
            dbsql.AddField(SqlDbType.Int, "TIPO_IMPACTO", item.GetImpacto.First());
                        
            dbsql.AddField(SqlDbType.Int, "TIPO_URGENCIA", item.GetUrgencia.First());
            dbsql.AddField(SqlDbType.Int, "TIPO_INCIDENCIA", item.GetTipo.First());

            dbsql.AddField(SqlDbType.Int, "ESTADO_INCIDENCIA", item.GetEstado.First());

            dbsql.AddField(SqlDbType.VarChar, "DESCRIPCION", item.Descripcion);
            dbsql.AddField(SqlDbType.VarChar, "RESPONSABLE", item.GetResponsable.First());
            dbsql.AddField(SqlDbType.DateTime, "FECHA_CREACION", DateTime.Now);

            //dbsql.AddWhere(SqlDbType.Int, "ID_INCIDENCIA", item.ID);

            dbsql.InsertNow();
        }
    }
}